home *** CD-ROM | disk | FTP | other *** search
/ Everything For A Hacker / 19990506-[HACK].iso / SECURE / CRYPT / GOST.ZIP / IMITO.ASM < prev    next >
Assembly Source File  |  1998-03-06  |  5KB  |  127 lines

  1. ;-----------------------------------------------------
  2. ; éδαáí«Γ¬á ¿¼¿óßΓá󬿠ñ½∩ ¼áßß¿óá ñá¡¡δσ ß«ú½áß¡«
  3. ; ¬α¿»Γ«á½ú«α¿Γ¼π âÄæÆ 28147-89.
  4. ; --------> ñ½∩ 16-í¿Γ«óδσ »α«µÑßß«α«ó 80x86 <--------
  5. ; Éáºαáí«Γá½ é¿¡«¬πα«ó Ç.₧., ú.î«ß¬óá, 1992-1995 ú.
  6. ; (C)1992-1995, æó«í«ñ¡«Ñ ¬«»¿α«óá¡¿Ñ ¿ ¿ß»«½∞º«óá¡¿Ñ.
  7. ;-----------------------------------------------------
  8. ; Åáαá¼ÑΓαδ  »α¿  ó맮óÑ  »ÑαÑñáεΓß∩  ó  ßΓφ¬Ñ :
  9. ; æ¼ÑΘÑ¡¿Ñ ÉẼÑα    Å  Ç  É  Ç  î  à  Æ  É
  10. ;NEAR FAR
  11. ;  2   4      4     FAR-áñαÑß ¬½ετá (è)
  12. ;  6   8      4     FAR-áñαÑß ¿ßσ«ñ¡«⌐ ¬«¼í¿¡áµ¿¿ (êè)
  13. ; 10  12      4     FAR-áñαÑß Γáí½¿µδ ºá¼Ñ¡ (Æç)
  14. ; 14  16      4     FAR-áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩ (ì)
  15. ; 18  20      2     τ¿ß½« 8-íá⌐Γ«óδσ í½«¬«ó
  16. ;*20  22      2     ñ½¿¡á ¬½ετá ó ñó«⌐¡δσ ß½«óáσ
  17. ;                   (ß¼. óáα¿á¡Γδ ¬«ñ¿α«óá¡¿∩)
  18. ;-----------------------------------------------------
  19. ; ç¡áτÑ¡¿∩ »áαá¼ÑΓα«ó »α¿ óδσ«ñÑ:
  20. ; - áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩ π¬áºδóδÑΓ  ¡á »Ñαóδ⌐ íá⌐Γ
  21. ;   »«ß½Ñ »«ß½Ññ¡Ñú« «íαáí«Γá¡¡«ú« í½«¬á;
  22. ; - áñαÑßá ¬½ετá, Γáí½¿µδ ºá¼Ñ¡ ¿ ¬«¡Γα«½∞¡«⌐ ¬«¼í¿¡á-
  23. ;   µ¿¿ ¡Ñ ¿º¼Ñ¡¿½¿ß∞;
  24. ; - «í½áßΓ∞ ¬«¡Γα«½∞¡«⌐ ¬«¼í¿¡áµ¿¿ ß«ñÑαª¿Γ º¡áτÑ¡¿Ñ,
  25. ;   ß ¬«Γ«αδ¼ ¡áñ« óδºóáΓ∞ Σπ¡¬µ¿ε ñ½∩ »α«ñ«½ªÑ¡¿∩;
  26. ; - ßτÑΓτ¿¬ í½«¬«ó αáóÑ¡ 0;
  27. ; - αÑú¿ßΓα  EAX  ß«ñÑαª¿Γ ¼½áñΦÑÑ ñó«⌐¡«Ñ ß½«ó«  ¬«¡-
  28. ;   Γα«½∞¡«⌐ ¬«¼í¿¡áµ¿¿,  ¿ß»«½∞ºπѼ«Ñ «íδτ¡« ¬á¬ ¿¼¿-
  29. ;   Γ«óßΓáó¬á,τΓ« ß««ΓóÑΓßΓóπÑΓ ó«ºóαáΓπ º¡áτÑ¡¿∩ Γ¿»á
  30. ;   Item,    «»αÑñѽѡ¡«ú«    ó    Σá⌐½Ñ   gost.h  ¬á¬
  31. ;   unsigned long.
  32. ;-----------------------------------------------------
  33. ; êß»«½∞ºπѼδÑ αÑú¿ßΓαδ : óßÑ
  34. ;------------------------------------------------------
  35. ; éáα¿á¡Γδ ¬«ñ¿α«óá¡¿∩
  36. ; - æ¿¼ó«½ KeySize:
  37. ; -- æ¿¼ó«½ ¡Ñ«»αÑñѽѡ:Σπ¡¬µ¿∩ ¿ß»«½∞ºπÑΓ αáºóÑα¡πΓδ⌐
  38. ;    ¬½ετ αẼÑα«¼ ó 16 ¬½ετÑóδσ φ½Ñ¼Ñ¡Γ«ó;
  39. ; -- æ¿¼ó«½ «»αÑñѽѡ ¿ ¿¼ÑÑΓ τ¿ß½«ó«Ñ º¡áτÑ¡¿Ñ:
  40. ;    Σπ¡¬µ¿∩ ¿ß»«½∞ºπÑΓ ¬½ετ π¬áºá¡¡«ú« αẼÑαá (ó
  41. ;    ¬½ετÑóδσ φ½Ñ¼Ñ¡Γáσ);
  42. ; -- æ¿¼ó«½ «»αÑñѽѡ, ¿¼ÑÑΓ »πßΓ«Ñ º¡áτÑ¡¿Ñ:
  43. ;    αẼÑα ¬½ετá »ÑαÑñáÑΓß∩ ¬á¬ »«ß½Ññ¡¿⌐ »áαá¼ÑΓα
  44. ;    Σπ¡¬µ¿¿.
  45. ;-----------------------------------------------------
  46. ;
  47. wptr    EQU     <word ptr>
  48. ;
  49. IFNDEF KeySize
  50. _keysize EQU    16      ; φ½Ñ¼Ñ¡Γ«ó ó ¬½ετÑ
  51. ELSE
  52. IFDIF KeySize,<>
  53. _keysize EQU    KeySize ; φ½Ñ¼Ñ¡Γ«ó ó ¬½ετÑ
  54. ENDIF
  55. ENDIF
  56. ;
  57.         .model  small,C
  58.         .code    $gost
  59.     extrn    gost:near
  60. imito   proc
  61.         public  imito
  62. ; óδτ¿ß½∩Ѽ ß¼ÑΘÑ¡¿Ñ »áαá¼ÑΓα«ó ó ßΓφ¬Ñ
  63.         a=8             ; 4 αÑú¿ßΓαá ó ßΓφ¬Ñ
  64. IF      (TYPE imito) EQ 0FFFEh
  65.         a=a+2           ; Ñß½¿ gamma - far-»α«µÑñπαá
  66. ENDIF
  67. ; çáñáѼ  ß¼ÑΘÑ¡¿Ñ  áαúπ¼Ñ¡Γ«ó  ó  ßΓφ¬Ñ
  68. ;
  69. key=    2+a
  70. syn=    6+a
  71. chg=    10+a
  72. tar=    14+a
  73. len=    18+a
  74. IFNDEF _keysize
  75. keylen= 20+a
  76. ENDIF
  77. ;
  78. ; æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó ß«ú½áß¡« ß«ú½áΦÑ¡¿∩¼ Turbo C
  79.         push    BP
  80.         push    DS          ; φΓ« ¡πª¡« ¡Ñ óßÑúñá !
  81.     push    SI
  82.         push    DI
  83. ; çáúαπªáѼ º¡áτÑ¡¿Ñ ¬«¼í¿¡áµ¿¿ «Γ »α«Φ½«ú« αáºá
  84.         mov     BP,SP       ; ¡áßΓα«⌐¬á ßΓφ¬«ó«ú« ¬áñαá
  85.         lds     SI,syn[BP]  ; DS:SI -> ß¿¡σα«»«»δ½¬á
  86.         mov     AX,[SI]     ; AX <= ¼½áñΦÑÑ ß½«ó« S1
  87.         mov     DX,2[SI]    ; DX <= ßΓáαΦÑÑ ß½«ó« S1
  88.         mov     DI,4[SI]    ; DI <= ¼½áñΦÑÑ ß½«ó« S2
  89.         mov     CX,6[SI]    ; CX <= ßΓáαΦÑÑ ß½«ó« S2
  90.         lds     BX,chg[BP]  ; DS:BX <- áñαÑß Γáí½.ºá¼Ñ¡
  91. ; ä«íáó½∩Ѽ í½«¬ ñá¡¡δσ
  92. circle: les     SI,tar[BP]  ; DS:SI<-áñαÑß  ¡áº¡áτÑ¡¿∩
  93.         xor     AX,ES:[SI]  ; âá¼¼¿απѼ
  94.         xor     DX,ES:2[SI] ;    8-íá⌐Γ¡δ⌐
  95.         xor     DI,ES:4[SI] ;       í½«¬
  96.         xor     CX,ES:6[SI] ;          ñá¡¡δσ
  97. ; â«Γ«ó¿¼ αÑú¿ßΓαδ ¿ óδºδóáѼ µ¿¬½ 32-ç
  98.         les     SI,key[BP]  ; ES:SI <- áñαÑß ¬½ετá
  99. IFDEF _keysize
  100.         mov     BP,CX       ; BP <- ßΓáαΦÑÑ  ß½«ó«  S2
  101.         mov     CX,_keysize ; CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
  102. ELSE
  103.         mov     BP,keylen[BP];CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
  104.         xchg    BP,CX       ; BP <- ßΓáαΦÑÑ  ß½«ó«  S2
  105. ENDIF
  106.         call    gost        ; Φáú  »α«ßΓ«⌐  ºá¼Ñ¡δ
  107.         mov     CX,BP       ; CX <- ßΓáαΦÑÑ  ß½«ó«  S2
  108.         mov     BP,SP       ; BP <- ßΓѬ«óδ⌐  ¬áñα
  109.         add     wptr tar[BP],8; ¬«ααѬµ¿∩ π¬áºáΓѽ∩
  110.         dec     wptr len[BP]; ¬«ααѬµ¿∩ ßτÑΓτ¿¬á
  111.         jnz     circle      ; ¡á úÑ¡Ñαáµ¿ε ¡«ó«ú« í½«¬á
  112. ; ºá¡«ß¿¼ ¡«ó«Ñ º¡áτÑ¡¿Ñ ¬«¼í¿¡áµ¿¿ ¡á Ñú« ¼ÑßΓ«
  113. ; (φΓ« ¡πª¡« ñ½∩ «íαáí«Γ¬¿ ¼áßß¿óá ñá¡¡δσ τáßΓ∩¼¿)
  114.         les     SI,syn[BP]  ; DS:SI -> ß¿¡σα«»«ß佬á
  115.         mov     ES:[SI],AX  ; ºá¡«ß¿¼ ¡«óδÑ
  116.         mov     ES:2[SI],DX ;    º¡áτÑ¡¿∩ S1,S2
  117.         mov     ES:4[SI],DI ;       ¡á   ¿σ
  118.         mov     ES:6[SI],CX ;          ¼ÑßΓ« !!!
  119. ; é«ßßΓá¡«ó½Ñ¡¿Ñ αÑú¿ßΓα«ó ¿º ßΓφ¬á
  120.         pop     DI
  121.         pop     SI
  122.         pop     DS
  123.         pop     BP
  124.         ret
  125. imito   endp
  126.     end
  127.